package rw.rwbehaviour;

import java.awt.image.BufferedImage;

/**
 * 游戏物体的父类
 * 如果想要表示游戏的物体，则必须要继承这个父类
 *
 * @author RWdaze
 */
public abstract class RwBehaviour implements Comparable<RwBehaviour> {
    @Override
    public int compareTo(RwBehaviour o) {
        return this.positionZ - o.positionZ;
    }

    /**
     * 物体在游戏场景中的显示优先度，越大的优先度越优先显示
     */
    public int positionZ = 0;

    /**
     * 物体在游戏场景中的位置
     */
    public Vector2 position = new Vector2();

    /**
     * 物体图片的横向和纵向的拉伸度
     */
    public Vector2 scale = new Vector2(1, 1);

    /**
     * 物体在游戏场景中旋转的角度。单位是度，逆时针旋转。
     */
    public double angle = 0;

    /**
     * 物体图片显示时的透明度
     */
    public float alpha = 1;

    /**
     * 物体是否被激活。在场景之中生效
     */
    public boolean active = true;

    /**
     * 物体是否在游戏场景中可见。
     */
    public boolean visible = true;

    /**
     * 物体相应的图片显示，若为null，则不显示
     */
    public BufferedImage image;

    /**
     * 物体在进入游戏场景时，执行一次的函数
     * 请重写该函数
     */
    public void start() {
    }

    /**
     * 物体在进入游戏场景之后，每一帧都会执行一次的函数
     * 请重写该函数
     */
    public void update() {
    }
}
